package web.fabrimind.pm.service.impl;

import java.util.List;
import web.fabrimind.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import web.fabrimind.pm.mapper.ProductionPlanMapper;
import web.fabrimind.pm.domain.ProductionPlan;
import web.fabrimind.pm.service.IProductionPlanService;

/**
 * 生产计划Service业务层处理
 * 
 * @author zhihui
 * @date 2025-03-25
 */
@Service
public class ProductionPlanServiceImpl implements IProductionPlanService 
{
    @Autowired
    private ProductionPlanMapper productionPlanMapper;

    /**
     * 查询生产计划
     * 
     * @param planId 生产计划主键
     * @return 生产计划
     */
    @Override
    public ProductionPlan selectProductionPlanByPlanId(Long planId)
    {
        return productionPlanMapper.selectProductionPlanByPlanId(planId);
    }

    /**
     * 查询生产计划列表
     * 
     * @param productionPlan 生产计划
     * @return 生产计划
     */
    @Override
    public List<ProductionPlan> selectProductionPlanList(ProductionPlan productionPlan)
    {
        return productionPlanMapper.selectProductionPlanList(productionPlan);
    }

    /**
     * 新增生产计划
     * 
     * @param productionPlan 生产计划
     * @return 结果
     */
    @Override
    public int insertProductionPlan(ProductionPlan productionPlan)
    {
        productionPlan.setCreateTime(DateUtils.getNowDate());
        return productionPlanMapper.insertProductionPlan(productionPlan);
    }

    /**
     * 修改生产计划
     * 
     * @param productionPlan 生产计划
     * @return 结果
     */
    @Override
    public int updateProductionPlan(ProductionPlan productionPlan)
    {
        productionPlan.setUpdateTime(DateUtils.getNowDate());
        return productionPlanMapper.updateProductionPlan(productionPlan);
    }

    /**
     * 批量删除生产计划
     * 
     * @param planIds 需要删除的生产计划主键
     * @return 结果
     */
    @Override
    public int deleteProductionPlanByPlanIds(Long[] planIds)
    {
        return productionPlanMapper.deleteProductionPlanByPlanIds(planIds);
    }

    /**
     * 删除生产计划信息
     * 
     * @param planId 生产计划主键
     * @return 结果
     */
    @Override
    public int deleteProductionPlanByPlanId(Long planId)
    {
        return productionPlanMapper.deleteProductionPlanByPlanId(planId);
    }

    /**
     * 查询产品列表（不分页）
     */
    @Override
    public List<ProductionPlan> selectProductList(ProductionPlan productionPlan) {
        return productionPlanMapper.selectProductList(productionPlan);
    }

    /**
     * 查询生产线列表（不分页）
     */
    @Override
    public List<ProductionPlan> selectLineList(ProductionPlan productionPlan) {
        return productionPlanMapper.selectLineList(productionPlan);
    }


    /**
     * 查询BOM列表（不分页）
     */
    @Override
    public List<ProductionPlan> selectBomList(ProductionPlan productionPlan) {
        return productionPlanMapper.selectBomList(productionPlan);
    }
}
